#include<bits/stdc++.h>
#define int long long
using namespace std;
const int mod=998244353,N=3e6+10,lim=3e6;
int n,m,q,k,fac[N],inv[N];
inline int qpow(int x,int y){
	int res=1,now=x;
	while(y){
		if(y&1) res*=now,res%=mod;
		now*=now,now%=mod,y>>=1;
	}
	return res;
}
inline void init(){
	fac[0]=fac[1]=inv[0]=inv[1]=1;
	for(int i=2;i<=lim;i++)
		fac[i]=fac[i-1]*i%mod,inv[i]=-inv[mod%i]*(mod/i),inv[i]=(inv[i]%mod+mod)%mod;
	for(int i=2;i<=lim;i++)
		inv[i]*=inv[i-1],inv[i]%=mod;
}
inline int C(int x,int y){
	return fac[x]*inv[x-y]%mod*inv[y]%mod;
}
signed main(){
	freopen("sequence.in","r",stdin);
	freopen("sequence.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	init();
	cin>>n>>m>>q>>k;
	if(q<m||n<m){
		cout<<0;
		return 0;
	}
	int ans=qpow(n,q);
	for(int i=1;i<=m;i++){
		int now=C(m,i)*qpow(n-i,q)%mod;
		if(i&1) ans-=now;
		else ans+=now;
		ans=(ans%mod+mod)%mod;
	}
	ans*=qpow(k,q-m),ans%=mod,ans*=n-m+1,ans%=mod;
	cout<<ans;
	return 0;
}